# 以摄氏度为单位存储温度的类
# class Celsius:
#     def __init__(self, temperature = 0):
#         self.temperature = temperature
#
#     #将摄氏度转换为华氏度
#     def to_fahrenheit(self):
#         return (self.temperature * 1.8) + 32

# 有一天，一个值得信赖的客户来找我们，
# 温度不能低于-273摄氏度(热力学专业的学生可能会说实际上是-273.15摄氏度)，
# 也被称为绝对零度。他进一步要求我们实现这个值约束。

# celsius = Celsius(37)
# celsius.temperature = -300
# print(celsius.__dict__)


# 封装是面向对象编程的核心概念之一，旨在隐藏对象的内部实现细节，仅暴露必要的接口
# 封装可以确保数据的安全性!!
class Celsius:
    def __init__(self, temperature = 0):
        self.set_temperature(temperature)

    def to_fahrenheit(self):
        return (self.get_temperature() * 1.8) + 32

    # new update
    def get_temperature(self):
        return self.__temperature

    def set_temperature(self, value):
        if value < -273:
            raise ValueError("低于-273度是不可能的")
        self.__temperature = value

celsius = Celsius(37)
celsius.set_temperature(-300)
print(celsius.get_temperature())